package rest

import (
	"net/http"
)

// GET mapping http method "GET"
//
// tag:
//
// - url: mapping url path
//
// - param: define request param source and type, format: "param_name:param_type source"
// exp: param:"ctx context, id:int path, name query, resource:dto body"
//
// - resp: define response type
//
// - desc: define api description
type GET struct{}

func (G GET) GetType() string {
	return http.MethodGet
}

// HEAD mapping http method "HEAD"
//
// tag:
//
// - url: mapping url path
//
// - param: define request param source and type, format: "param_name:param_type source"
// exp: param:"ctx context, id:int path, name query, resource:dto body"
//
// - resp: define response type
//
// - desc: define api description
type HEAD struct{}

func (G HEAD) GetType() string {
	return http.MethodHead
}

// POST mapping http method "POST"
//
// tag:
//
// - url: mapping url path
//
// - param: define request param source and type, format: "param_name:param_type source"
// exp: param:"ctx context, id:int path, name query, resource:dto body"
//
// - resp: define response type
//
// - desc: define api description
type POST struct{}

func (G POST) GetType() string {
	return http.MethodPost
}

// PUT mapping http method "PUT"
//
// tag:
//
// - url: mapping url path
//
// - param: define request param source and type, format: "param_name:param_type source"
// exp: param:"ctx context, id:int path, name query, resource:dto body"
//
// - resp: define response type
//
// - desc: define api description
type PUT struct{}

func (G PUT) GetType() string {
	return http.MethodPut
}

// PATCH mapping http method "PATCH"
//
// tag:
//
// - url: mapping url path
//
// - param: define request param source and type, format: "param_name:param_type source"
// exp: param:"ctx context, id:int path, name query, resource:dto body"
//
// - resp: define response type
//
// - desc: define api description
type PATCH struct{}

func (G PATCH) GetType() string {
	return http.MethodPatch
}

// OPTIONS mapping http method "OPTIONS"
//
// tag:
//
// - url: mapping url path
//
// - param: define request param source and type, format: "param_name:param_type source"
// exp: param:"ctx context, id:int path, name query, resource:dto body"
//
// - resp: define response type
//
// - desc: define api description
type OPTIONS struct{}

func (G OPTIONS) GetType() string {
	return http.MethodOptions
}

// DELETE mapping http method "DELETE"
//
// tag:
//
// - url: mapping url path
//
// - param: define request param source and type, format: "param_name:param_type source"
// exp: param:"ctx context, id:int path, name query, resource:dto body"
//
// - resp: define response type
//
// - desc: define api description
type DELETE struct{}

func (G DELETE) GetType() string {
	return http.MethodDelete
}

// CONNECT mapping http method "CONNECT"
//
// tag:
//
// - url: mapping url path
//
// - param: define request param source and type, format: "param_name:param_type source"
// exp: param:"ctx context, id:int path, name query, resource:dto body"
//
// - resp: define response type
//
// - desc: define api description
type CONNECT struct{}

func (G CONNECT) GetType() string {
	return http.MethodConnect
}

// TRACE mapping http method "TRACE"
//
// tag:
//
// - url: mapping url path
//
// - param: define request param source and type, format: "param_name:param_type source"
// exp: param:"ctx context, id:int path, name query, resource:dto body"
//
// - resp: define response type
//
// - desc: define api description
type TRACE struct{}

func (G TRACE) GetType() string {
	return http.MethodTrace
}
